package Q5;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

/*
 使用基于 tcp 协议的编程模型实现多人同时在线聊天和传输文件，
 要求每个客户端将发送的聊天内容和文件发送到服务器，服务器接收到后转发给当前所有在线的客户端。
 */
public class ServerPool {

    public static void main(String[] args) {
        //1 创建ServerSocket类对象并提供服务器的端口号
        ServerSocket ss = null;
        Socket Client = null;
        ArrayList<User> client_list = new ArrayList<>();
        try {
            ss = new ServerSocket(6666);
            //2 通过accept方法接收客户端的请求并实现同时接收多个客户端发送来的
            while(true){
                System.out.println("等待客户端发来连接请求..................");
                Client = ss.accept();
                //当每次有新客户端来连接时，创建新的线程
                User user = new User(Client, Client.getInetAddress());
                System.out.println("客户端 "+ Client.getInetAddress() +"连接成功！");
                client_list.add(user);
                Thread new_client = new Thread(new ServerThread(user, client_list));
                new_client.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(null != Client){
                try {
                    Client.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(null != ss){
                try {
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }





    }
}
